package br.com.tiespec.web.Util;

import java.text.MessageFormat;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

public class MsgUtil {
	
	@SuppressWarnings("unused")
	private static final String PACOTE_MENSAGENS_IDIOMAS = "br.com.tiespec.web.I18n.messages"; 

	public static String getMensagem(String propriedade) {
		FacesContext context = FacesContext.getCurrentInstance();
		ResourceBundle bundle = context.getApplication().getResourceBundle(context, "i18n");
		return bundle.getString(propriedade);
	}

	public static String getMensagem(String propriedade, Object... parametros) {
		String mensagem = getMensagem(propriedade);
		MessageFormat formatter = new MessageFormat(mensagem);
		return formatter.format(parametros);
	}
	
	public static void msgInfoNotInter(String str){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,str,null));
	}
	
	public static void msgInfo(String str){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,getMensagem(str),null));
	}
	
	public static void msgInfo(String str, Object... parametros){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,getMensagem(str, parametros),null));
	}

	public static void msgError(String str){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,getMensagem(str),null));
	}
	
	public static void msgError(String str, Object... parametros){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,getMensagem(str, parametros),null));
	}
	
	public static void msgFatal(String str){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,getMensagem(str),null));
	}
	
	public static void msgFatal(String str, Object... parametros){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,getMensagem(str, parametros),null));
	}
	
	public static void msgWarn(String str){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,getMensagem(str),null));
	}
	
	public static void msgWarn(String str, Object... parametros){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,getMensagem(str, parametros),null));
	}
	
	public static void msgSucesso(String acao, String chaveCandidata){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,getMensagem("MsgSucesso", defineTipoSucesso(acao), chaveCandidata),null));
	}
	
	public static void msgErro(String acao, String chaveCandidata){
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,getMensagem("MsgErro", defineTipoErro(acao), chaveCandidata),null));
	}
	
	private static String defineTipoSucesso(String tmp){
		if (tmp.equalsIgnoreCase("inc"))
			return getMensagem("incluido");
		if (tmp.equalsIgnoreCase("atu"))
			return getMensagem("atualizado");
		if (tmp.equalsIgnoreCase("alt"))
			return getMensagem("alterado");
		if (tmp.equalsIgnoreCase("exc"))
			return getMensagem("excluido");
		if (tmp.equalsIgnoreCase("ati"))
			return getMensagem("ativado");
		if (tmp.equalsIgnoreCase("des"))
			return getMensagem("desativado");
		if (tmp.equalsIgnoreCase("apr"))
			return getMensagem("aprovado");
		if (tmp.equalsIgnoreCase("rep"))
			return getMensagem("reprovado");
		if (tmp.equalsIgnoreCase("sus"))
			return getMensagem("suspenso");
		if (tmp.equalsIgnoreCase("rea"))
			return getMensagem("reativado");
		if (tmp.equalsIgnoreCase("can"))
			return getMensagem("cancelado");
		if (tmp.equalsIgnoreCase("rmv"))
			return getMensagem("removido");
		return "";
	}
	
	private static String defineTipoErro(String tmp){
		if (tmp.equalsIgnoreCase("inc"))
			return getMensagem("incluir");
		if (tmp.equalsIgnoreCase("atu"))
			return getMensagem("atualizar");
		if (tmp.equalsIgnoreCase("alt"))
			return getMensagem("alterar");
		if (tmp.equalsIgnoreCase("exc"))
			return getMensagem("excluir");
		if (tmp.equalsIgnoreCase("ati"))
			return getMensagem("ativar");
		if (tmp.equalsIgnoreCase("des"))
			return getMensagem("desativar");
		if (tmp.equalsIgnoreCase("apr"))
			return getMensagem("aprovar");
		if (tmp.equalsIgnoreCase("rep"))
			return getMensagem("reprovar");
		if (tmp.equalsIgnoreCase("sus"))
			return getMensagem("suspender");
		if (tmp.equalsIgnoreCase("rea"))
			return getMensagem("reativar");
		if (tmp.equalsIgnoreCase("can"))
			return getMensagem("cancelar");
		if (tmp.equalsIgnoreCase("rmv"))
			return getMensagem("remover");
		return "";
	}
}